/**
 * 将对象转换为URL查询字符串
 * @param {Object} data - 需要转换的对象
 * @returns {string} - URL查询字符串
 */
export const queryString = (
  data:
    | { [x: string]: string | number | boolean }
    | null
    | Array<number | string>
): string => {
  if (typeof data !== 'object' || data === null) {
    throw new Error('The input should be an object')
  }

  return '?' + Object.entries(data).flatMap(([key, value]) => {
    if (Array.isArray(value)) {
      // 如果值是对象数组，对每个元素进行编码并添加键名前缀
      return value.map(item => `${encodeURIComponent(key)}=${encodeURIComponent(item)}`);
    } else {
      // 对于非数组值，直接生成键值对
      return [`${encodeURIComponent(key)}=${encodeURIComponent(value)}`];
    }
  }).join('&');
}
